//导入instace 的axios 实例
import instance from './http'

//定义一个get 请求类型方法
const get = (url,params)=>{
  return instance({
     url:url,
     method:'get',
     params
  })
}

//定义一个post 请求类型方法
const post =(url,data)=>{
  return instance({
    url:url,
    method:'post',
    data
 })
}

//定义一个jsonp 请求类型方法
const jsonp = (url,params)=>{
  if(!url){
      throw new Error('jsonp方法必须传入url地址参数！');
  }
  //jsonp 原理：创建script标签，设置src ,设置回调函数
 
  //处理查询字符串
  var qs = "";
  for(key in params){
      qs+='&' + key + '=' + params[key] ;
  }
  qs = qs.slice(1);
 
  //准备引入地址
  let pathUrl = url + (url.indexOf('?')>=0?"":'?') + qs;

  const callback = 'jsonpCallback'+Date.now(); //生成回调函数的名字
        pathUrl+='&callback='+callback;

  return new Promise((resolve,reject)=>{
      console.log(pathUrl,qs);
       //准备回调函数 全局 ，在请求成功之前的回调
      window[callback] = (result)=>{
          resolve(result);
      }

      //创建src标签
      let script = document.createElement("script");
          script.src = pathUrl;
      document.head.appendChild(script);
          //script 中的引用内容加载完毕之后 ，销毁标签
         script.onload = function(){
             document.head.removeChild(this);
         }     
  });
};

//定义一个登录方法
const login = (url, data)=>{
  return instance({
    url:url,
    method:'post',
    data
 })
}

export default {
  get,
  post,
  jsonp,
  login
}


